package com.xp.flow.component;

import com.yomahub.liteflow.annotation.LiteflowComponent;
import com.yomahub.liteflow.core.NodeComponent;
import lombok.extern.slf4j.Slf4j;

import java.util.HashMap;
import java.util.Map;

/**
 * 开始节点组件
 * 流程的入口点，初始化流程上下文数据
 * 
 * @author AI Assistant
 * @since 1.0.0
 */
@Slf4j
@LiteflowComponent("START")
public class StartComponent extends BaseFlowComponent {

    @Override
    public void process() {
        // 获取节点配置
        Map<String, Object> config = getNodeConfig();
        String nodeName = getConfigValue("name", "开始节点");
        
        // 记录开始节点执行
        logExecution("流程开始执行: %s", nodeName);
        
        // 获取初始输入数据（如果有）
        Map<String, Object> inputData = getInputData();
        
        // 创建输出数据，包含初始输入
        Map<String, Object> outputData = new HashMap<>();
        if (inputData != null && !inputData.isEmpty()) {
            outputData.put("input", inputData);
            logExecution("初始输入数据: %s", inputData);
        } else {
            outputData.put("input", new HashMap<>());
            logExecution("无初始输入数据");
        }
        
        // 添加流程元数据
        Map<String, Object> metadata = new HashMap<>();
        metadata.put("startTime", System.currentTimeMillis());
        // 生成唯一的流程ID，在LiteFlow中可以使用其他方式获取请求标识
        metadata.put("flowId", "flow_" + System.currentTimeMillis() + "_" + Thread.currentThread().getId());
        outputData.put("metadata", metadata);
        
        // 设置输出数据到上下文
        setOutputData(outputData);
        
        logExecution("开始节点执行完成，输出数据: %s", outputData);
    }
}